//
//  WBNetworkManager.swift
//  Inpro
//
//  Created by 彭灿 on 16/10/8.
//  Copyright © 2016年 Roble. All rights reserved.
//

import UIKit
import AFNetworking


enum WBHTTPMethod {
    case GET
    case POST
}

/// 网络管理工具
class WBNetworkManager: AFHTTPSessionManager {

    /// 静态区/ 常量 / 闭包 
    /// 在第一次访问时，执行闭包， 并且将结果保存在 shared 常量中
    static let shared = WBNetworkManager()
    
    /// 使用一个函数封装 AFN 的 GET / POST 请求
    /// 静态 AFN 的 GET / POST 请求
    ///
    /// - parameter method:     GET / POST
    /// - parameter URLString:  URLString
    /// - parameter parameters: parameters
    /// - parameter completion: completion
    func request(method: WBHTTPMethod = .GET ,URLString: String, parameters: [String: Any],
                 completion: @escaping (_ Json: Any?,_ isSuccess: Bool)->()) {
        /// 成功回调
        let success = { (task: URLSessionDataTask?, json: Any?)->() in
            completion(json, true)
        }
        /// 失败回调
        let failure = { (task: URLSessionDataTask?, error: Error)->() in
            // error 通常比较吓人, 例如编号: xxxx, 错误原因一堆英文
            print("网络请求错误 \(error)")
            completion(nil, false)
        }
        
        if method == .GET {
            get(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
        }else {
            post(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
        }
    }
    
}
